{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 2次元データの整理"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2つのデータの関係性の指標"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-14T06:40:19.527554Z",
     "start_time": "2018-08-14T06:40:19.362974Z"
    }
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "%precision 3\n",
    "pd.set_option('precision', 3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-14T06:40:19.532933Z",
     "start_time": "2018-08-14T06:40:19.528592Z"
    }
   },
   "outputs": [],
   "source": [
    "df = pd.read_csv('../data/ch2_scores_em.csv',\n",
    "                 index_col='生徒番号')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-14T06:40:19.544111Z",
     "start_time": "2018-08-14T06:40:19.534006Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>数学</th>\n",
       "      <th>英語</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>生徒</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>65</td>\n",
       "      <td>42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>80</td>\n",
       "      <td>69</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>63</td>\n",
       "      <td>56</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>63</td>\n",
       "      <td>41</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>76</td>\n",
       "      <td>57</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>60</td>\n",
       "      <td>48</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>G</th>\n",
       "      <td>81</td>\n",
       "      <td>65</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>66</td>\n",
       "      <td>49</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>78</td>\n",
       "      <td>65</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>82</td>\n",
       "      <td>58</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    数学  英語\n",
       "生徒        \n",
       "A   65  42\n",
       "B   80  69\n",
       "C   63  56\n",
       "D   63  41\n",
       "E   76  57\n",
       "F   60  48\n",
       "G   81  65\n",
       "H   66  49\n",
       "I   78  65\n",
       "J   82  58"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "en_scores = np.array(df['英語'])[:10]\n",
    "ma_scores = np.array(df['数学'])[:10]\n",
    "\n",
    "scores_df = pd.DataFrame({'英語':en_scores,\n",
    "                          '数学':ma_scores},\n",
    "                         index=pd.Index(['A', 'B', 'C', 'D', 'E',\n",
    "                                         'F', 'G', 'H', 'I', 'J'],\n",
    "                                        name='生徒'))\n",
    "scores_df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 共分散"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-14T06:40:19.566635Z",
     "start_time": "2018-08-14T06:40:19.545215Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>数学</th>\n",
       "      <th>英語</th>\n",
       "      <th>英語の偏差</th>\n",
       "      <th>数学の偏差</th>\n",
       "      <th>偏差同士の積</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>生徒</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>65</td>\n",
       "      <td>42</td>\n",
       "      <td>-13.0</td>\n",
       "      <td>-6.4</td>\n",
       "      <td>83.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>80</td>\n",
       "      <td>69</td>\n",
       "      <td>14.0</td>\n",
       "      <td>8.6</td>\n",
       "      <td>120.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>63</td>\n",
       "      <td>56</td>\n",
       "      <td>1.0</td>\n",
       "      <td>-8.4</td>\n",
       "      <td>-8.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>63</td>\n",
       "      <td>41</td>\n",
       "      <td>-14.0</td>\n",
       "      <td>-8.4</td>\n",
       "      <td>117.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>76</td>\n",
       "      <td>57</td>\n",
       "      <td>2.0</td>\n",
       "      <td>4.6</td>\n",
       "      <td>9.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>60</td>\n",
       "      <td>48</td>\n",
       "      <td>-7.0</td>\n",
       "      <td>-11.4</td>\n",
       "      <td>79.8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>G</th>\n",
       "      <td>81</td>\n",
       "      <td>65</td>\n",
       "      <td>10.0</td>\n",
       "      <td>9.6</td>\n",
       "      <td>96.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>66</td>\n",
       "      <td>49</td>\n",
       "      <td>-6.0</td>\n",
       "      <td>-5.4</td>\n",
       "      <td>32.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>78</td>\n",
       "      <td>65</td>\n",
       "      <td>10.0</td>\n",
       "      <td>6.6</td>\n",
       "      <td>66.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>82</td>\n",
       "      <td>58</td>\n",
       "      <td>3.0</td>\n",
       "      <td>10.6</td>\n",
       "      <td>31.8</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    数学  英語  英語の偏差  数学の偏差  偏差同士の積\n",
       "生徒                              \n",
       "A   65  42  -13.0   -6.4    83.2\n",
       "B   80  69   14.0    8.6   120.4\n",
       "C   63  56    1.0   -8.4    -8.4\n",
       "D   63  41  -14.0   -8.4   117.6\n",
       "E   76  57    2.0    4.6     9.2\n",
       "F   60  48   -7.0  -11.4    79.8\n",
       "G   81  65   10.0    9.6    96.0\n",
       "H   66  49   -6.0   -5.4    32.4\n",
       "I   78  65   10.0    6.6    66.0\n",
       "J   82  58    3.0   10.6    31.8"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "summary_df = scores_df.copy()\n",
    "summary_df['英語の偏差'] =\\\n",
    "    summary_df['英語'] - summary_df['英語'].mean()\n",
    "summary_df['数学の偏差'] =\\\n",
    "    summary_df['数学'] - summary_df['数学'].mean()\n",
    "summary_df['偏差同士の積'] =\\\n",
    "    summary_df['英語の偏差'] * summary_df['数学の偏差']\n",
    "summary_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-14T06:40:19.570409Z",
     "start_time": "2018-08-14T06:40:19.567674Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "62.800"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "summary_df['偏差同士の積'].mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-14T06:40:19.575907Z",
     "start_time": "2018-08-14T06:40:19.571427Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 86.  ,  62.8 ],\n",
       "       [ 62.8 ,  68.44]])"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cov_mat = np.cov(en_scores, ma_scores, ddof=0)\n",
    "cov_mat"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-14T06:40:19.580080Z",
     "start_time": "2018-08-14T06:40:19.577571Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(62.800, 62.800)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cov_mat[0, 1], cov_mat[1, 0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-14T06:40:19.583685Z",
     "start_time": "2018-08-14T06:40:19.581281Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(86.000, 68.440)"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cov_mat[0, 0], cov_mat[1, 1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-14T06:40:19.588330Z",
     "start_time": "2018-08-14T06:40:19.584646Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(86.000, 68.440)"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.var(en_scores, ddof=0), np.var(ma_scores, ddof=0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 相関係数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-14T06:40:19.592372Z",
     "start_time": "2018-08-14T06:40:19.589231Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.819"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.cov(en_scores, ma_scores, ddof=0)[0, 1] /\\\n",
    "    (np.std(en_scores) * np.std(ma_scores))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-14T06:40:19.597039Z",
     "start_time": "2018-08-14T06:40:19.593315Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 1.   ,  0.819],\n",
       "       [ 0.819,  1.   ]])"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.corrcoef(en_scores, ma_scores)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-14T06:40:19.602887Z",
     "start_time": "2018-08-14T06:40:19.598025Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>数学</th>\n",
       "      <th>英語</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>数学</th>\n",
       "      <td>1.000</td>\n",
       "      <td>0.819</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>英語</th>\n",
       "      <td>0.819</td>\n",
       "      <td>1.000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       数学     英語\n",
       "数学  1.000  0.819\n",
       "英語  0.819  1.000"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "scores_df.corr()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2次元データの視覚化"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 散布図"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-14T06:40:19.675926Z",
     "start_time": "2018-08-14T06:40:19.603899Z"
    }
   },
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-14T06:40:19.805306Z",
     "start_time": "2018-08-14T06:40:19.677328Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAe4AAAHhCAYAAACoQV2DAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3X+M3Hed3/HnG8ckI2izEBJyOwRWVdCWO8xhspAAUZSqNAYUqHEjSiqg/EgtWnEndOAelnIpcLnmWh8FqiucjJoLCVw40TMLpQXToiQ0XGIlYQEXkGmU7Dm3hkK2t3Cclotl3v1jZp312l7vruc73+/nO8+HZHnmuzv+fub9mewr38989j2RmUiSpDI8pe4BSJKktTO4JUkqiMEtSVJBDG5JkgpicEuSVBCDW5KkghjckiQVxOCWJKkgBrckSQU5p+4BnMqznvWsnJiYqHsYZ+2JJ57gqU99at3DGFnWv37OQf2cg3qtp/4PPfTQ45l54Zm+r5HBPTExwYMPPlj3MM7a7OwsbfgfkFJZ//o5B/VzDuq1nvpHxF+s5ftcKpckqSAGtyRJBTG4JUkqiMEtSVJBKtmcFhEd4HbgQuC7wMeBLwOH+9/ytsx8uIpzS5LUZlVdcb8F+EpmXg38AngWcGtmXtn/Y2hLkrQBVQX3U4Bn929fALwYeE1EfCMipiPi3IrOK0lSq1X1e9yfAj4eEfuBHwBjwG2Z+YmI+CDwRuCO5Q+IiJ3AToBut8vs7GxFQxue+fn5uocw0qx//ZyD+jkH9aqi/lUF9xPADZl5rB/IZObe/tcOAC9b+YD+1/cCTE1NtaJzGmDjg5pZ//o5B/VzDuo16PpXtVR+NfB7/dvXAs+OiHf1718BHKrovJIktVpVwX0X8MyIuI/eUvke4LURcT8wCXyuovNKktRqlSyVZ+Yv6b9fvczrqziXJEmjxAYskiQVxOCWJKkgBrckSQVp5OdxS5LOzvTMHHv2H+LIwiLjY4+wa9sk27d26x6WBsDglqSWmZ6ZY/e+gywePQbA3MIiu/cdBDC8W8ClcklqmT37Dx0P7SWLR4+xZ78tNNrA4JakljmysLiu4yqLwS1JLTM+1lnXcZXF4Jakltm1bZLO5k0nHOts3sSubZM1jUiD5OY0SWqZpQ1oT+4q77irvEUMbklqoe1bu2zf2vuIZD8drF1cKpckqSAGtyRJBXGpXJJWOLHrmO8Pq1kMbklaxq5jajqXyiVpGbuOqekMbklaxq5jajqDW5KWseuYms7glqRl7DqmpnNzmiQtY9cxNZ3BLUkrLHUdk5rIpXJJkgpicEuSVBCDW5KkghjckiQVxOCWJKkgBrckSQUxuCVJKojBLUlSQQxuSZIKYnBLklQQg1uSpIIY3JIkFcTgliSpIAa3JEkF8WM9JWmDpmfm/NxuDZ3BLUkbMD0zx+59B1k8egyAuYVFdu87CGB4q1IulUvSBuzZf+h4aC9ZPHqMPfsP1TQijQqDW5I24MjC4rqOS4NicEvSBoyPddZ1XBoUg1uSNmDXtkk6mzedcKyzeRO7tk3WNCKNCjenSdIGLG1Ac1e5hs3glqQN2r61a1Br6FwqlySpIAa3JEkFqWSpPCI6wO3AhcB3gXcDe4HLgC9l5k1VnFeSVB87yQ1HVVfcbwG+kplXA78AXgGcB0wBOyNivKLzSpJqsNRJbm5hkeTJTnLTM3N1D611qgrupwDP7t++ANgK3AW8CLi3f1+S1BJ2khueqnaVfwr4eETsB34AnA8cBi4C7u7fP0FE7AR2AnS7XWZnZysa2vDMz8/XPYSRZv3r5xzUb1hzsFonuTb8PN+oKupfVXA/AdyQmcf6gXwecC7wPXrvcz+68gGZuZfe++BMTU3lxMRERUMbrrY8j1JZ//o5B/UbxhyMjz3C3CnCe3ysM/KvgUE//6qWyq8Gfq9/+1pgBrg8Mx8GrurflyS1hJ3khqeq4L4LeGZE3EdvqfxeYCwiDgAPZOaRis4rSarB9q1dbtmxhe5YhwC6Yx1u2bHFXeUVqGSpPDN/Sf/96mVuqOJckqRmsJPccNiARZKkghjckiQVxOCWJKkgfjqYJElr1IS2rga3JElrsNTWdalD3FJbV2Co4e1SuSRJa9CUtq4GtyRJa7BaW9dhMrglSVqD8bHOuo5XxeCWJGkNmtLW1c1pkiStwdIGNHeVS5JUiCa0dXWpXJKkghjckiQVxOCWJKkgvsctnUETWhyqmXxtqA4Gt7SKprQ4VPP42lBdXCqXVtGUFodqHl8bqovBLa2iKS0O1Ty+NlQXg1taRVNaHKp5fG2oLga3tIqmtDhU8/jaUF3cnCatoiktDtU8vjZUF4NbOoMmtDhUM/naUB1cKpckqSAGtyRJBTG4JUkqiO9xS1LFbI26ftbs9AxuSaqQrVHXz5qtzqVySaqQrVHXz5qtzuCWpArZGnX9rNnqDG5JqpCtUdfPmq3O4JakCtkadf2s2ercnCZJFbI16vpZs9UZ3JJUMVujrp81Oz2XyiVJKojBLUlSQVwql9RodtCSTmRwS2osO2hJJ3OpXFJj2UFLOpnBLamx7KAlnczgltRYdtCSTmZwS2osO2hJJ3NzmqTGsoOWdDKDW1Kj2UFLOpFL5ZIkFcTgliSpIAa3JEkFqeQ97og4F7gVeB7w18DvA3cAh/vf8rbMfLiKc0tSiWztqrWq6or7VcBjmXklcAC4Arg1M6/s/zG0JalvqbXr3MIiyZOtXadn5uoemhqoquCeBd4TEYeAVwPfAl4TEd+IiOn+FbkkCVu7an2q+nWwHwJvyMwvR8Ru4O8Dt2XmJyLig8Ab6S2dHxcRO4GdAN1ul9nZ2YqGNjzz8/N1D2GkWf/6OQdrs1pr17P9Wegc1KuK+lcV3LuAP+3fngb+dWa+vX//APCylQ/IzL3AXoCpqamcmJioaGjD1ZbnUSrrXz/n4MzGxx5h7hThPT7WGUj9nIN6Dbr+Ve4qf0X/75cDj0TEu/r3rwBc/5GkPlu7aj2qCu6PADsi4j7gdcDHgNdGxP3AJPC5is4rScXZvrXLLTu20B3rEEB3rMMtO7a4q1ynVMlSeWb+mN7O8uVeX8W5JKkNbO2qtbIBiyRJBTG4JUkqiMEtSVJB/FhPqYFGpf3lWp7nqNRi0E6s2yPWrUUMbqlhltpfLnXSWmp/CbTqB+9anueo1GLQrFu7uVQuNcyotL9cy/MclVoMmnVrN4NbapjV2l+2yVqe56jUYtCsW7sZ3FLDjI911nW8VGt5nqNSi0Gzbu1mcEsNMyrtL9fyPEelFoNm3drNzWlSwyxtHmr7Tuq1PM9RqcWgWbd2i8ysewwnmZqaygcffLDuYZy12dlZP5WnRta/fs5B/ZyDeq2n/hHxUGZOnen7XCqXJKkgBrckSQXxPW6pUHYU2xjrptIZ3FKB7Iy1MdZNbeBSuVQgO2NtjHVTGxjcUoHsjLUx1k1tYHBLBbIz1sZYN7WBwS0VyM5YG2Pd1AZuTpMKZGesjbFuagODWyrU9q1dA2cDrJtK51K5JEkFMbglSSqIwS1JUkF8j1saojraba71nLYCHT3OeZkMbmlI6mi3udZz2gp09Djn5XKpXBqSOtptrvWctgIdPc55uQxuaUjqaLe51nPaCnT0OOflMrilIamj3eZaz2kr0NHjnJfL4JaGpI52m2s9p61AR49zXi43p0lDUke7zbWe01ago8c5L5fBLQ1RHe0213pOW4GOHue8TC6VS5JUEINbkqSCGNySJBXE97ilBrIV5foNsmbWX01mcEsNYyvK9Rtkzay/ms6lcqlhbEW5foOsmfVX0xncUsPYinL9Blkz66+mM7ilhrEV5foNsmbWX01ncEsNYyvK9Rtkzay/ms7NaVLD2Ipy/QZZM+uvpjO4pQayFeX6DbJm1l9N5lK5JEkFMbglSSpIJUvlEXEucCvwPOCvgbcBNwOXAV/KzJuqOK+kk9kFrDp11Nb5VFVX3K8CHsvMK4EDwE7gPGAK2BkR4xWdV9IyS13A5hYWSZ7sAjY9M1f30IpXR22dT0F1wT0LvCciDgGvBv4KuAt4EXAvsLWi80paxi5g1amjts6noLpd5T8E3pCZX46I3cAFwGHgIuBu4PyVD4iInfSuzOl2u8zOzlY0tOGZn5+vewgjzfqv3gVsGP+NtXkO6qjtRs7Z5jkoQRX1ryq4dwF/2r89DXwPeGP/78uAR1c+IDP3AnsBpqamcmJioqKhDVdbnkepRr3+42OPMHeKH/bjY52h1aatc1BHbTd6zrbOQSkGXf8qd5W/ov/3y4GbgMsz82HgKmCmwvNK6rMLWHXqqK3zKajuivsjwJ9ExFuAH9HbVf7hiDgA7M/MIxWdV9IydgGrTh21dT4FFQV3Zv6Y3s7y5W6o4lySVmcXsOrUUVvnUzZgkSSpIAa3JEkFMbglSSqInw4mtZwtMqV2MbilFltqkbnUbWupRSZgeEuFcqlcajFbZErtY3BLLbZai0xJZTK4pRYbH+us67ik5jO4pRazRabUPm5Ok1rMFplS+xjcUsvZIlNqF5fKJUkqiMEtSVJBDG5Jkgrie9wNZ7tKafhunD7InQce41gmmyK4/vJLuHn7lrqHJQEGd6PZrlIavhunD/Lp+w8fv38s8/h9w1tN4FJ5g9muUhq+Ow88tq7j0rAZ3A1mu0pp+I5lruu4NGwGd4PZrlIavk0R6zouDZvB3WC2q5SG7/rLL1nXcWnY3JzWYLarlIZvaQOau8rVVAZ3w9muUhq+m7dvMajVWC6VS5JUEINbkqSCuFSuStn5bWNGpW51PM9Rqa3ay+BWZez8tjGjUrc6nueo1Fbt5lK5KmPnt40ZlbrV8TxHpbZqN4NblbHz28aMSt3qeJ6jUlu1m8Gtytj5bWNGpW51PM9Rqa3azeBWZez8tjGjUrc6nueo1Fbt5uY0VcbObxszKnWr43mOSm3Vbga3KmXnt40ZlbrV8TxHpbZqL5fKJUkqiMEtSVJBDG5Jkgrie9zSENXRbvPG6YN+RKXUIme84o6IcyLi70bE0/r331z9sKT2WWq3ObewSPJku83pmbnKznnj9EE+ff9hjmUCcCyTT99/mBunD1Z2TknVWstS+T8H/gz43f79t1Y3HKm96mi3eeeBx9Z1XFLznTa4I+KCiPgycAnwAeBnERFADGlsUqvU0W5z6Up7rcclNd9pgzsz54HfBl4NJHAd8Lb+bUnrVEe7zU1x6v/PPt1xSc13pqXy/wv8L3pX2T8EXgmMR8Rv9v9cVfUApbaoo93m9Zdfsq7jkppvtaXyZwJ/Aoz1DyXw4f7fs8Bh4D9VPD6pNbZv7XLLji10xzoE0B3rcMuOLZXuKr95+xbefMVzj19hb4rgzVc8113lUsFO++tgmfn/IuI6YPeyY9+PiB9l5hcBIuLfDGGMUmvU0W7z5u1bDGqpRU4b3BGxCfgC8CN6V9n397+0/D3ua6sbmiRJWmm1zWnHMvMqYD9wM3B+/0ux7Huq+wVUSZJ0krV0TvsfwAPAD/r3bweIiAuBX83Me1Y+ICLeAbyjf/di4A7gnfTeFwd4W2Y+fBbjliRpJK0luLcA7wU+GxHfzsw7IuKpwKeAj53qAZl5K3ArQETcDtwNRGZ+YBCDVjnqaPHZZNZD0tlaa6/yGeBR4OUR8W7g+cC/zcz9qz0oIp5Or4HLOcBrIuIfAT8B/mlm/u3Gh60SLLX4XOoWttTiExjJsLIekgZh1d/jjohbgX8JPBP42/7fR4E/Bv5ZRJx3hn//OmAf8DhwW2a+Evg28MazHLcKUEeLzyazHpIG4UxX3DfQu7q+Dng/cAT4aGZ+JyIeBj4KvGuVx78JeGd/E9u3+8cOAC9b+Y0RsRPYCdDtdpmdnV3H02im+fn5uodQq9VafA5jfptW/7rrUYemzcEocg7qVUX9zxTcvwH8H+Af0rty/hLw3/u/353AF0/3wIg4H7ggM+ci4nrg/Mz8I+AK4Psrvz8z9wJ7AaampnJiYmL9z6aB2vI8NmJ87BHmThFW42OdodWlSfVvQj3q0ObnVgrnoF6Drv+ZWp4+Avw68CzgHwAdekvl19NbLv/6Ko+9Fvha//bngddGxP3AJPC5sxizClFHi88msx6SBuFMV9wXAU8AzwW+B7wdOA94CLgKeAO9X/U6SWZ+ZtntXwCvH8B4VZClDVfuou6xHpIG4UzB/XTgafR2lX8L+J/ANcDrgB3AJzhNcEtQT4vPJrMeks7WqsGdmR8DiIjv0ns/+xXAv8vMO/vH31P5CCVJ0nFr+j3uzPyz/s17Vhw/MvARSZKk0zrT5jRJktQgBrckSQUxuCVJKojBLUlSQQxuSZIKYnBLklQQg1uSpIIY3JIkFcTgliSpIAa3JEkFMbglSSqIwS1JUkEMbkmSCmJwS5JUEINbkqSCGNySJBXE4JYkqSAGtyRJBTG4JUkqiMEtSVJBDG5JkgpicEuSVBCDW5KkghjckiQVxOCWJKkgBrckSQUxuCVJKojBLUlSQQxuSZIKYnBLklQQg1uSpIIY3JIkFeScugeg5pmemWPP/kMcWVhkfKzDrm2TbN/arXtYkiQMbq0wPTPH7n0HWTx6DIC5hUV27zsIYHhLUgO4VK4T7Nl/6HhoL1k8eow9+w/VNCJJ0nIGt05wZGFxXcclScNlcOsE42OddR2XJA2Xwa0T7No2SWfzphOOdTZvYte2yZpGJElazs1pOsHSBjR3lUtSMxncOsn2rV2DWpIayqVySZIKYnBLklQQg1uSpIJU8h53RLwDeEf/7sXAJ4FLgcuAL2XmTVWc91Rs36nT8bUhqUSVXHFn5q2ZeWVmXgn8OfB14DxgCtgZEeNVnHelpfadcwuLJE+275yemRvG6dVgvjYklarSpfKIeDpwCb0r7buAFwH3AlurPO8S23fqdHxtSCpV1b8Odh2wDzgfOAxcBNzdv3+CiNgJ7ATodrvMzs6e9clXa985iH//TObn5ys/h05vtfrX/doYFf43UD/noF5V1L/q4H4T8E7gDcC5wPfoXX0/uvIbM3MvsBdgamoqJyYmzvrk42OPMHeKH9DjYx0G8e+vxbDOo1M7Xf2b8NoYFdazfs5BvQZd/8qWyiPifOCCzJwDHgIuz8yHgauAmarOu5ztO3U6vjYklarK97ivBb7Wv30/MBYRB4AHMvNIhec9bvvWLrfs2EJ3rEMA3bEOt+zY4s5h+dqQVKzKlsoz8zPLbidwQ1XnWo3tO3U6vjYklcgGLJIkFcTgliSpIAa3JEkF8WM9JTWarWmlExnckhprqTXtUpe7pda0gOGtkeVSuaTGsjWtdDKDW1JjrdaaVhpVBrekxhof66zruDQKDG5JjWVrWulkbk6T1FhLG9DcVS49yeCW1Gi2ppVO5FK5JEkFMbglSSqIwS1JUkEMbkmSCmJwS5JUEINbkqSCGNySJBXE4JYkqSAGtyRJBTG4JUkqiMEtSVJBDG5JkgpicEuSVBCDW5KkghjckiQVxOCWJKkgBrckSQUxuCVJKojBLUlSQQxuSZIKYnBLklQQg1uSpIIY3JIkFcTgliSpIOfUPQBpPaZn5tiz/xBHFhYZH+uwa9sk27d26x6WJA2Nwa1iTM/MsXvfQRaPHgNgbmGR3fsOAhjekkaGS+Uqxp79h46H9pLFo8fYs/9QTSOSpOEzuFWMIwuL6zouSW1kcKsY42OddR2XpDYyuFWMXdsm6WzedMKxzuZN7No2WdOIJGn43JymYixtQHNXuaRRZnCrKNu3dg1qSSPNpXJJkgpicEuSVJDKgjsi3h8RD0TE5yPi1yPicETc2/9zaVXnlSSpzSp5jzsingO8IDNfGhG/A2wHbs3MD1RxvjazxackabmqrrhfBfw0Ir4KdIF7gddExDciYjoizq3ovK2y1OJzbmGR5MkWn9Mzc3UPTZJUk6qC+2Lgksy8BvgZcCVwW2a+Evg28MaKztsqtviUJK1U1a+D/Ry4p3/7HmAqMz/Rv38AeNnKB0TETmAnQLfbZXZ2tqKhDc/8/PxZPX61Fp9tqE/Vzrb+OnvOQf2cg3pVUf+qgvs+4H392y8BfhAR78rMPwKuAL6/8gGZuRfYCzA1NZUTExMVDW24zuZ5jI89wtwpwnt8rHNW/+4osU71cw7q5xzUa9D1r2SpPDMfAo5ExH3ApcB/BV4bEfcDk8Dnqjhv29jiU5K0UmWd0zLzvSsOvb6qc7WVLT4lSSvZ8rThbPEpSVrOzmmSJBXE4JYkqSAGtyRJBTG4JUkqiMEtSVJBDG5JkgpicEuSVBCDW5KkghjckiQVxOCWJKkgBrckSQUxuCVJKojBLUlSQfx0sJpMz8z5cZ06K76GpNFkcNdgemaO3fsOsnj0GABzC4vs3ncQwB+8WhNfQ9Locqm8Bnv2Hzr+A3fJ4tFj7Nl/qKYRqTS+hqTRZXDX4MjC4rqOSyv5GpJGl8Fdg/GxzrqOSyv5GpJGl8Fdg13bJuls3nTCsc7mTezaNlnTiFQaX0PS6HJzWg2WNg+5I1gb5WtIGl0Gd022b+36Q1ZnxdeQNJpcKpckqSAGtyRJBTG4JUkqiMEtSVJBDG5JkgpicEuSVBCDW5KkghjckiQVxOCWJKkgBrckSQUxuCVJKojBLUlSQQxuSZIKYnBLklQQg1uSpIIY3JIkFcTgliSpIAa3JEkFMbglSSqIwS1JUkEMbkmSCmJwS5JUEINbkqSCGNySJBXknKr+4Yh4P/BPgL8E3gh8HLgM+FJm3lTVeVWm6Zk59uw/xJGFRcbHOuzaNsn2rd26hyVJjVPJFXdEPAd4QWa+FPgm8D7gPGAK2BkR41WcV2Wanplj976DzC0sksDcwiK79x1kemau7qFJUuNUtVT+KuCnEfFVoAv8DXAX8CLgXmBrRedVgfbsP8Ti0WMnHFs8eow9+w/VNCJJaq6qlsovBi7JzGsi4t8DzwBmgYuAu4HzVz4gInYCOwG63S6zs7MVDW145ufn6x5CEY4sLJ72+Nm8Dqx//ZyD+jkH9aqi/lUF98+Be/q376G3RH4u8D1673M/uvIBmbkX2AswNTWVExMTFQ1tuNryPKo0PvYIc6cI7/GxzlnXz/rXzzmon3NQr0HXv6ql8vuAy/u3XwI8AVyemQ8DVwEzFZ1XBdq1bZLO5k0nHOts3sSubZM1jUiSmquS4M7Mh4AjEXEfcCnwB8BYRBwAHsjMI1WcV2XavrXLLTu20B3rEEB3rMMtO7a4q1ySTqGyXwfLzPeuOHRDVedS+bZv7RrUkrQGNmCRJKkgBrckSQUxuCVJKojBLUlSQQxuSZIKYnBLklQQg1uSpIIY3JIkFcTgliSpIAa3JEkFMbglSSqIwS1JUkEMbkmSCmJwS5JUEINbkqSCGNySJBXE4JYkqSAGtyRJBTG4JUkqiMEtSVJBDG5JkgpicEuSVBCDW5KkghjckiQV5Jy6B1C16Zk59uw/xJGFRcbHOuzaNsn2rd26hyVJ0oa0OrinZ+bYve8gi0ePATC3sMjufQcBDG9JUpFavVS+Z/+h46G9ZPHoMfbsP1TTiCRJOjutDu4jC4vrOi5JUtO1OrjHxzrrOi5JUtO1Orh3bZuks3nTCcc6mzexa9tkTSOSJOnstHpz2tIGNHeVS5LaotXBDb3wNqglSW3R6qVySZLaxuCWJKkgBrckSQUxuCVJKojBLUlSQQxuSZIKYnBLklQQg1uSpIIY3JIkFcTgliSpIAa3JEkFMbglSSqIwS1JUkEMbkmSCmJwS5JUkMjMusdwkoj4CfAXdY9jAJ4FPF73IEaY9a+fc1A/56Be66n/8zLzwjN9UyODuy0i4sHMnKp7HKPK+tfPOaifc1CvKurvUrkkSQUxuCVJKojBXa29dQ9gxFn/+jkH9XMO6jXw+vsetyRJBfGKW5KkghjckiQVxOAesIi4LiJ+GD2fjIhvRsSH6h7XKIiIX4uIwxFxb//P852D4YuI90fEAxHx+YjY7BwMT0S8Y9nr/+GI+G3rP1wRcW5EfKY/B1+OiGcPeg4M7gGKiIuB64HHgCuA84ApYGdEjNc5thHxdODWzLwyM6+k1/jAORiiiHgO8ILMfCnwTeB9OAdDk5nLX/9/Dnwd6z9srwIe68/BAWAnA54Dg3uwPgz8FvBL4DLgLuBFwL3A1hrHNSqeDrwmIr4REdPAy3AOhu1VwE8j4qtAF/gbnIOhi4inA5fgz6E6zALviYhDwKuBv2LAc2BwD0hE/Avgq5m51Kr1fHpt7i4C7u7fV7UeB27LzFcC3wbGcA6G7WLgksy8BvgZ8AycgzpcB+zDn0N1+CHwhsycBL4AXMCA58DgHpx/DLw9Iu4GfpXelfe5wCPA3wF+Wt/QRkNmfjszP9G/ewD4DZyDYfs5cE//9tLfzsHwvYlecP8U6z9su+iFN8A08AEGPAcG94Bk5rWZeXVmXg18D7gWuDwzHwauAmbqHN8oiIjrI+Jd/btX0HvrwjkYrvuAy/u3XwI8gXMwVBFxPnBBZs4BD2H96/CK/t8vB25iwHNgcFfnfmAsIg4AD2TmkboHNAI+D7w2Iu4HJoE/wDkYqsx8CDgSEfcBl+Ic1OFa4Gv92/4cGr6PADv6/w28DviPDHgO7JwmSVJBvOKWJKkgBrckSQUxuCVJKojBLUlSQQxuSZIKck7dA5A0XBFxHvDZzNzev/+VzHz1sq9/DdgEfBF4Kr22jb8GfLf/LW/KzB8Nd9SSlvjrYNKIiIgXAh+lt9L2QuA7/S+9GPhW//bv0msaAUBm/n7/sf8lM68b3mglnY7BLY2YiDgHeDvwl/TaL744Mz/e/9pFwHOXffszgHfTa6byHeAnmfmbwx2xpOVcKpdGSP+jZ2eAQ8CvAEeBxyPiJuCFmfnjiLiT/lJ5Zv6HiNhM75O+7qR3xS6pRga3NHr+W2beEBE3AI9n5nRE3Lbs61+gt5z+vyPiffSuuo8C/wr4WURck5lfHfqoJQEulUsjIyLeCrx12aEXAE8DHlx27A56y+jQe9/7k8AHl339cGb+VpXjlLQ6r7ilEZGZtwO3A0TE36P34QffBR7LzD/sH78UeH5m3hgRnwUupPcJU3/c/2f+cOgDl3QCg1saIRHxK/Q+q/n/4Zs4AAAAeklEQVQ19K6sjwC/ExFfB/4zvfe/3xIRV9L7SE6AdwDb+rc7wx2xpJVswCKNiIg4F/gQvd3kr87Muez5EPAW4GLgF8Ad/c+Wv6b/0I8t+6z5R+sYu6Qn+R63JEkF8YpbkqSCGNySJBXE4JYkqSAGtyRJBTG4JUkqyP8H6ykhEIPtYQsAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 576x576 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "english_scores = np.array(df['英語'])\n",
    "math_scores = np.array(df['数学'])\n",
    "\n",
    "fig = plt.figure(figsize=(8, 8))\n",
    "ax = fig.add_subplot(111)\n",
    "# 散布図\n",
    "ax.scatter(english_scores, math_scores)\n",
    "ax.set_xlabel('英語')\n",
    "ax.set_ylabel('数学')\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 回帰直線"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-14T06:40:19.900171Z",
     "start_time": "2018-08-14T06:40:19.806854Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x576 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 係数β_0とβ_1を求める\n",
    "poly_fit = np.polyfit(english_scores, math_scores, 1)\n",
    "# β_0+β_1 xを返す関数を作る\n",
    "poly_1d = np.poly1d(poly_fit)\n",
    "# 直線を描画するためのx座標を作る\n",
    "xs = np.linspace(english_scores.min(), english_scores.max())\n",
    "# xsに対応するy座標を求める\n",
    "ys = poly_1d(xs)\n",
    "\n",
    "fig = plt.figure(figsize=(8, 8))\n",
    "ax = fig.add_subplot(111)\n",
    "ax.scatter(english_scores, math_scores, label='点数')\n",
    "ax.plot(xs, ys, color='gray',\n",
    "        label=f'{poly_fit[1]:.2f}+{poly_fit[0]:.2f}x')\n",
    "ax.set_xlabel('英語')\n",
    "ax.set_ylabel('数学')\n",
    "# 凡例の表示\n",
    "ax.legend(loc='upper left')\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### ヒートマップ"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-14T06:40:20.028133Z",
     "start_time": "2018-08-14T06:40:19.901235Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x576 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure(figsize=(10, 8))\n",
    "ax = fig.add_subplot(111)\n",
    "\n",
    "c = ax.hist2d(english_scores, math_scores,\n",
    "              bins=[9, 8], range=[(35, 80), (55, 95)])\n",
    "ax.set_xlabel('英語')\n",
    "ax.set_ylabel('数学')\n",
    "ax.set_xticks(c[1])\n",
    "ax.set_yticks(c[2])\n",
    "# カラーバーの表示\n",
    "fig.colorbar(c[3], ax=ax)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## アンスコムの例"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-14T06:40:20.034280Z",
     "start_time": "2018-08-14T06:40:20.029676Z"
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(4, 11, 2)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[ 10.  ,   8.04],\n",
       "       [  8.  ,   6.95],\n",
       "       [ 13.  ,   7.58],\n",
       "       [  9.  ,   8.81],\n",
       "       [ 11.  ,   8.33],\n",
       "       [ 14.  ,   9.96],\n",
       "       [  6.  ,   7.24],\n",
       "       [  4.  ,   4.26],\n",
       "       [ 12.  ,  10.84],\n",
       "       [  7.  ,   4.82],\n",
       "       [  5.  ,   5.68]])"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# npy形式で保存されたNumPy arrayを読み込む\n",
    "anscombe_data = np.load('../data/ch3_anscombe.npy')\n",
    "print(anscombe_data.shape)\n",
    "anscombe_data[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-14T06:40:20.052006Z",
     "start_time": "2018-08-14T06:40:20.035614Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>data1</th>\n",
       "      <th>data2</th>\n",
       "      <th>data3</th>\n",
       "      <th>data4</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Xの平均</th>\n",
       "      <td>9.00</td>\n",
       "      <td>9.00</td>\n",
       "      <td>9.00</td>\n",
       "      <td>9.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Xの分散</th>\n",
       "      <td>10.00</td>\n",
       "      <td>10.00</td>\n",
       "      <td>10.00</td>\n",
       "      <td>10.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Yの平均</th>\n",
       "      <td>7.50</td>\n",
       "      <td>7.50</td>\n",
       "      <td>7.50</td>\n",
       "      <td>7.50</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Yの分散</th>\n",
       "      <td>3.75</td>\n",
       "      <td>3.75</td>\n",
       "      <td>3.75</td>\n",
       "      <td>3.75</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>XとYの相関係数</th>\n",
       "      <td>0.82</td>\n",
       "      <td>0.82</td>\n",
       "      <td>0.82</td>\n",
       "      <td>0.82</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>XとYの回帰直線</th>\n",
       "      <td>3.00+0.50x</td>\n",
       "      <td>3.00+0.50x</td>\n",
       "      <td>3.00+0.50x</td>\n",
       "      <td>3.00+0.50x</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "               data1       data2       data3       data4\n",
       "Xの平均            9.00        9.00        9.00        9.00\n",
       "Xの分散           10.00       10.00       10.00       10.00\n",
       "Yの平均            7.50        7.50        7.50        7.50\n",
       "Yの分散            3.75        3.75        3.75        3.75\n",
       "XとYの相関係数        0.82        0.82        0.82        0.82\n",
       "XとYの回帰直線  3.00+0.50x  3.00+0.50x  3.00+0.50x  3.00+0.50x"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stats_df = pd.DataFrame(index=['Xの平均', 'Xの分散', 'Yの平均',\n",
    "                               'Yの分散', 'XとYの相関係数',\n",
    "                               'XとYの回帰直線'])\n",
    "for i, data in enumerate(anscombe_data):\n",
    "    dataX = data[:, 0]\n",
    "    dataY = data[:, 1]\n",
    "    poly_fit = np.polyfit(dataX, dataY, 1)\n",
    "    stats_df[f'data{i+1}'] =\\\n",
    "        [f'{np.mean(dataX):.2f}',\n",
    "         f'{np.var(dataX):.2f}',\n",
    "         f'{np.mean(dataY):.2f}',\n",
    "         f'{np.var(dataY):.2f}',\n",
    "         f'{np.corrcoef(dataX, dataY)[0, 1]:.2f}',\n",
    "         f'{poly_fit[1]:.2f}+{poly_fit[0]:.2f}x']\n",
    "stats_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-14T06:40:20.368592Z",
     "start_time": "2018-08-14T06:40:20.053270Z"
    },
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x720 with 4 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# グラフを描画する領域を2×2個作る\n",
    "fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(10, 10),\n",
    "                         sharex=True, sharey=True)\n",
    "\n",
    "xs = np.linspace(0, 30, 100)\n",
    "for i, data in enumerate(anscombe_data):\n",
    "    poly_fit = np.polyfit(data[:,0], data[:,1], 1)\n",
    "    poly_1d = np.poly1d(poly_fit)\n",
    "    ys = poly_1d(xs)\n",
    "    # 描画する領域の選択\n",
    "    ax = axes[i//2, i%2]\n",
    "    ax.set_xlim([4, 20])\n",
    "    ax.set_ylim([3, 13])\n",
    "    # タイトルをつける\n",
    "    ax.set_title(f'data{i+1}')\n",
    "    ax.scatter(data[:,0], data[:,1])\n",
    "    ax.plot(xs, ys, color='gray')\n",
    "\n",
    "# グラフ同士の間隔を狭くする\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  },
  "toc": {
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": "block",
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
